'''
 案例9-6：使用requests和beautifulsoup库爬取百度搜索结果
'''

#导入requests和beautifulsoup库
import requests
from bs4 import BeautifulSoup

#定义函数基于requests库获取网页源代码
def getHTML(url):
    try:
        headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}
        r = requests.get(url,headers=headers)
        r.raise_for_status()
        html = r.text
    except:
        print("error")
    return html

#定义函数基于beautifulsoup解析目标,参数html为网页源代码，selector为选择器
def getTarget(html,selector=None):
    soup = BeautifulSoup(html,'html.parser')
    resultset = soup.select(selector)
    return resultset

#主函数，定义目标网页地址url、搜索关键词参数以及目标内容选择器直接获取结果
if __name__=='__main__':
    keyword='python'
    url='https://www.baidu.com/s?wd='+keyword
    #爬取百度搜索结果个数，其选择器为类名为nums_text的span，父级容器类名为nums，采用组合选择器
    #调用getTarget函数返回解析对象res
    res = getTarget(getHTML(url),selector='div.nums>span.nums_text')
    #遍历解析对象元素的string属性生成结果列表
    targetText = [item.string for item in res]
    print(targetText)